package com.simple.mqtt.server.dispatcher;

import com.simple.mqtt.server.domain.Message;
import io.netty.channel.ChannelHandlerContext;

/**
 * MQTT 消息分发器接口，负责消息的分发和处理
 * 主要功能包括：
 * - 发送消息给订阅者
 * - 处理保留消息
 * - 分发消息到对应的客户端
 */
public interface IMqttMessageDispatcher {

    /**
     * 发送消息给订阅者
     *
     * @param message 消息对象
     */
    void send(Message message);

    /**
     * 发送保留消息给客户端
     *
     * @param context 客户端上下文
     * @param clientId 客户端ID
     * @param message 消息对象
     */
    void sendRetainMessage(ChannelHandlerContext context, String clientId, Message message);

    /**
     * 分发消息
     *
     * @param message 消息对象
     * @param fromClientId 发送者客户端ID
     */
    void dispatch(Message message, String fromClientId);
}